1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.purple.connection;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.glib.glist;
34 import derelict.glib.gslist;
35 import derelict.purple.plugin;
36 import derelict.purple.account;
37 import derelict.purple.sslconn;
38 import core.stdc.time;
39 
40 extern (C):
41 
42 alias _PurpleConnection PurpleConnection;
43 alias _Anonymous_0 PurpleConnectionFlags;
44 alias _Anonymous_1 PurpleConnectionState;
45 alias _Anonymous_2 PurpleConnectionError;
46 alias _Anonymous_3 PurpleConnectionErrorInfo;
47 alias _Anonymous_4 PurpleConnectionUiOps;
48 
49 enum _Anonymous_0
50 {
51 	PURPLE_CONNECTION_HTML = 1,
52 	PURPLE_CONNECTION_NO_BGCOLOR = 2,
53 	PURPLE_CONNECTION_AUTO_RESP = 4,
54 	PURPLE_CONNECTION_FORMATTING_WBFO = 8,
55 	PURPLE_CONNECTION_NO_NEWLINES = 16,
56 	PURPLE_CONNECTION_NO_FONTSIZE = 32,
57 	PURPLE_CONNECTION_NO_URLDESC = 64,
58 	PURPLE_CONNECTION_NO_IMAGES = 128,
59 	PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY = 256,
60 	PURPLE_CONNECTION_SUPPORT_MOODS = 512,
61 	PURPLE_CONNECTION_SUPPORT_MOOD_MESSAGES = 1024
62 }
63 
64 enum _Anonymous_1
65 {
66 	PURPLE_DISCONNECTED = 0,
67 	PURPLE_CONNECTED = 1,
68 	PURPLE_CONNECTING = 2
69 }
70 
71 enum _Anonymous_2
72 {
73 	PURPLE_CONNECTION_ERROR_NETWORK_ERROR = 0,
74 	PURPLE_CONNECTION_ERROR_INVALID_USERNAME = 1,
75 	PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED = 2,
76 	PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE = 3,
77 	PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT = 4,
78 	PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR = 5,
79 	PURPLE_CONNECTION_ERROR_NAME_IN_USE = 6,
80 	PURPLE_CONNECTION_ERROR_INVALID_SETTINGS = 7,
81 	PURPLE_CONNECTION_ERROR_CERT_NOT_PROVIDED = 8,
82 	PURPLE_CONNECTION_ERROR_CERT_UNTRUSTED = 9,
83 	PURPLE_CONNECTION_ERROR_CERT_EXPIRED = 10,
84 	PURPLE_CONNECTION_ERROR_CERT_NOT_ACTIVATED = 11,
85 	PURPLE_CONNECTION_ERROR_CERT_HOSTNAME_MISMATCH = 12,
86 	PURPLE_CONNECTION_ERROR_CERT_FINGERPRINT_MISMATCH = 13,
87 	PURPLE_CONNECTION_ERROR_CERT_SELF_SIGNED = 14,
88 	PURPLE_CONNECTION_ERROR_CERT_OTHER_ERROR = 15,
89 	PURPLE_CONNECTION_ERROR_OTHER_ERROR = 16
90 }
91 
92 struct _Anonymous_3
93 {
94 	PurpleConnectionError type;
95 	char* description;
96 }
97 
98 struct _Anonymous_4
99 {
100 	void function (PurpleConnection*, const(char)*, size_t, size_t) connect_progress;
101 	void function (PurpleConnection*) connected;
102 	void function (PurpleConnection*) disconnected;
103 	void function (PurpleConnection*, const(char)*) notice;
104 	void function (PurpleConnection*, const(char)*) report_disconnect;
105 	void function () network_connected;
106 	void function () network_disconnected;
107 	void function (PurpleConnection*, PurpleConnectionError, const(char)*) report_disconnect_reason;
108 	void function () _purple_reserved1;
109 	void function () _purple_reserved2;
110 	void function () _purple_reserved3;
111 }
112 
113 struct _PurpleConnection
114 {
115 	PurplePlugin* prpl;
116 	PurpleConnectionFlags flags;
117 	PurpleConnectionState state;
118 	PurpleAccount* account;
119 	char* password;
120 	int inpa;
121 	GSList* buddy_chats;
122 	void* proto_data;
123 	char* display_name;
124 	guint keepalive;
125 	gboolean wants_to_die;
126 	guint disconnect_timeout;
127 	time_t last_received;
128 }
129 
130 version(Derelict_Link_Static)
131 {
132     extern( C ) nothrow 
133     {
134         void purple_connection_new(PurpleAccount* account, gboolean regist, const(char)* password);
135         void purple_connection_new_unregister(PurpleAccount* account, const(char)* password, PurpleAccountUnregistrationCb cb, void* user_data);
136         void purple_connection_destroy(PurpleConnection* gc);
137         void purple_connection_set_state(PurpleConnection* gc, PurpleConnectionState state);
138         void purple_connection_set_account(PurpleConnection* gc, PurpleAccount* account);
139         void purple_connection_set_display_name(PurpleConnection* gc, const(char)* name);
140         void purple_connection_set_protocol_data(PurpleConnection* connection, void* proto_data);
141         PurpleConnectionState purple_connection_get_state(const(PurpleConnection)* gc);
142         PurpleAccount* purple_connection_get_account(const(PurpleConnection)* gc);
143         PurplePlugin* purple_connection_get_prpl(const(PurpleConnection)* gc);
144         const(char)* purple_connection_get_password(const(PurpleConnection)* gc);
145         const(char)* purple_connection_get_display_name(const(PurpleConnection)* gc);
146         void* purple_connection_get_protocol_data(const(PurpleConnection)* connection);
147         void purple_connection_update_progress(PurpleConnection* gc, const(char)* text, size_t step, size_t count);
148         void purple_connection_notice(PurpleConnection* gc, const(char)* text);
149         void purple_connection_error(PurpleConnection* gc, const(char)* reason);
150         void purple_connection_error_reason(PurpleConnection* gc, PurpleConnectionError reason, const(char)* description);
151         void purple_connection_ssl_error(PurpleConnection* gc, PurpleSslErrorType ssl_error);
152         gboolean purple_connection_error_is_fatal(PurpleConnectionError reason);
153         void purple_connections_disconnect_all();
154         GList* purple_connections_get_all();
155         GList* purple_connections_get_connecting();
156         void purple_connections_set_ui_ops(PurpleConnectionUiOps* ops);
157         PurpleConnectionUiOps* purple_connections_get_ui_ops();
158         void purple_connections_init();
159         void purple_connections_uninit();
160         void* purple_connections_get_handle();
161     }
162 }
163 else
164 {
165     extern( C ) nothrow 
166     {
167         alias da_purple_connection_new = void function(PurpleAccount* account, gboolean regist, const(char)* password);													
168         alias da_purple_connection_new_unregister = void function(PurpleAccount* account, const(char)* password, PurpleAccountUnregistrationCb cb, void* user_data);	
169         alias da_purple_connection_destroy = void function(PurpleConnection* gc);																						
170         alias da_purple_connection_set_state = void function(PurpleConnection* gc, PurpleConnectionState state);														
171         alias da_purple_connection_set_account = void function(PurpleConnection* gc, PurpleAccount* account);															
172         alias da_purple_connection_set_display_name = void function(PurpleConnection* gc, const(char)* name);															
173         alias da_purple_connection_set_protocol_data = void function(PurpleConnection* connection, void* proto_data);													
174         alias da_purple_connection_get_state = PurpleConnectionState function(const(PurpleConnection)* gc);																
175         alias da_purple_connection_get_account = PurpleAccount* function(const(PurpleConnection)* gc);																	
176         alias da_purple_connection_get_prpl = PurplePlugin* function(const(PurpleConnection)* gc);																		
177         alias da_purple_connection_get_password = const(char)* function(const(PurpleConnection)* gc);																	
178         alias da_purple_connection_get_display_name = const(char)* function(const(PurpleConnection)* gc);																
179         alias da_purple_connection_get_protocol_data = void* function(const(PurpleConnection)* connection);																
180         alias da_purple_connection_update_progress = void function(PurpleConnection* gc, const(char)* text, size_t step, size_t count);									
181         alias da_purple_connection_notice = void function(PurpleConnection* gc, const(char)* text);																		
182         alias da_purple_connection_error = void function(PurpleConnection* gc, const(char)* reason);																	
183         alias da_purple_connection_error_reason = void function(PurpleConnection* gc, PurpleConnectionError reason, const(char)* description);							
184         alias da_purple_connection_ssl_error = void function(PurpleConnection* gc, PurpleSslErrorType ssl_error);														
185         alias da_purple_connection_error_is_fatal = gboolean function(PurpleConnectionError reason);																	
186         alias da_purple_connections_disconnect_all = void function();																									
187         alias da_purple_connections_get_all = GList* function();																										
188         alias da_purple_connections_get_connecting = GList* function();																									
189         alias da_purple_connections_set_ui_ops = void function(PurpleConnectionUiOps* ops);																				
190         alias da_purple_connections_get_ui_ops = PurpleConnectionUiOps* function();																						
191         alias da_purple_connections_init = void function();																												
192         alias da_purple_connections_uninit = void function();																											
193         alias da_purple_connections_get_handle = void* function();																										
194     }
195 
196     __gshared
197     {
198 	    da_purple_connection_new purple_connection_new;
199 	    da_purple_connection_new_unregister purple_connection_new_unregister;
200 	    da_purple_connection_destroy purple_connection_destroy;
201 	    da_purple_connection_set_state purple_connection_set_state;
202 	    da_purple_connection_set_account purple_connection_set_account;
203 	    da_purple_connection_set_display_name purple_connection_set_display_name;
204 	    da_purple_connection_set_protocol_data purple_connection_set_protocol_data;
205 	    da_purple_connection_get_state purple_connection_get_state;
206 	    da_purple_connection_get_account purple_connection_get_account;
207 	    da_purple_connection_get_prpl purple_connection_get_prpl;
208 	    da_purple_connection_get_password purple_connection_get_password;
209 	    da_purple_connection_get_display_name purple_connection_get_display_name;
210 	    da_purple_connection_get_protocol_data purple_connection_get_protocol_data;
211 	    da_purple_connection_update_progress purple_connection_update_progress;
212 	    da_purple_connection_notice purple_connection_notice;
213 	    da_purple_connection_error purple_connection_error;
214 	    da_purple_connection_error_reason purple_connection_error_reason;
215 	    da_purple_connection_ssl_error purple_connection_ssl_error;
216 	    da_purple_connection_error_is_fatal purple_connection_error_is_fatal;
217 	    da_purple_connections_disconnect_all purple_connections_disconnect_all;
218 	    da_purple_connections_get_all purple_connections_get_all;
219 	    da_purple_connections_get_connecting purple_connections_get_connecting;
220 	    da_purple_connections_set_ui_ops purple_connections_set_ui_ops;
221 	    da_purple_connections_get_ui_ops purple_connections_get_ui_ops;
222 	    da_purple_connections_init purple_connections_init;
223 	    da_purple_connections_uninit purple_connections_uninit;
224 	    da_purple_connections_get_handle purple_connections_get_handle;
225     }
226 }